const { DataTypes } = require('sequelize');
const { sequelize } = require('../config/database');

const Banner = sequelize.define('Banner', {
  id: { 
    type: DataTypes.INTEGER.UNSIGNED, 
    primaryKey: true, 
    autoIncrement: true 
  },
  imgUrl: { 
    type: DataTypes.STRING(255), 
    allowNull: false, 
    field: 'img_url',
    // 图片URL
  },
  title: { 
    type: DataTypes.STRING(100), 
    allowNull: false, 
    field: 'title'
    // 图片标题
  },
  targetUrl: { 
    type: DataTypes.STRING(255), 
    allowNull: true, 
    field: 'target_url'
    // 目标链接URL
  },
  sortOrder: { 
    type: DataTypes.INTEGER, 
    allowNull: false, 
    defaultValue: 0, 
    field: 'sort_order'
    // 顺序号，小在前
  },
  show: { 
    type: DataTypes.TINYINT, 
    allowNull: false, 
    defaultValue: 1, 
    field: 'is_show'
    // 是否显示：1显示 0隐藏
  }
}, {
  tableName: 'banners',
  timestamps: true,
  createdAt: 'created_at',
  updatedAt: 'updated_at'
});

// 添加实例方法以确保字段正确序列化
Banner.prototype.toJSON = function() {
  const values = Object.assign({}, this.get());
  // 将is_show转换为show属性
  if (values.show !== undefined) {
    values.show = Boolean(values.show);
  }
  // 移除时间字段
  delete values.created_at;
  delete values.updated_at;
  return values;
};

module.exports = Banner;